/***************************************************************************
 *   Copyright (C) 2008 by Marco Gulino   *
 *   marco.gulino@gmail.com   *
 *                                                                         *
 *   This program is free software; you can redistribute it and/or modify  *
 *   it under the terms of the GNU General Public License as published by  *
 *   the Free Software Foundation; either version 2 of the License, or     *
 *   (at your option) any later version.                                   *
 *                                                                         *
 *   This program is distributed in the hope that it will be useful,       *
 *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
 *   GNU General Public License for more details.                          *
 *                                                                         *
 *   You should have received a copy of the GNU General Public License     *
 *   along with this program; if not, write to the                         *
 *   Free Software Foundation, Inc.,                                       *
 *   51 Franklin Street, Fifth Floor Boston, MA 02110-1301, USA            *
 ***************************************************************************/
#include "assertionUtils.h"

#include "filesscannertest.h"
#include "filesscanner.h"
#include "qfakedir.h"
#include "qfileinfointerface.h"

void FilesScannerTest::init() {
    scanner=new FilesScanner();
    testDir = NULL;
}

void FilesScannerTest::cleanup() {
    delete scanner;
    delete testDir;
}


void FilesScannerTest::shouldFilterFilesOnlyBySameSize()
{
    testDirFor("threeFiles");
    testDirFor("threeFiles");
    testDirFor("fourFiles");
    scanner->scan();
    QCOMPARE2(scanner->foundFiles().count(), 9);
    QCOMPARE2(scanner->foundFiles().count(0), 3);
    QCOMPARE2(scanner->foundFiles().count(1), 3);
    QCOMPARE2(scanner->foundFiles().count(2), 3);
    QCOMPARE2(scanner->foundFiles().count(3), 0);
    QCOMPARE(scanner->foundFiles().uniqueKeys(),
             QList<long>() << 0 << 1 << 2);
}


void FilesScannerTest::shouldScanAndManageMultipleDirectories() {
    testDirFor("threeFiles");
    testDirFor("fourFiles");
    long foundCount=scanner->scan();
    QCOMPARE2(foundCount, 6);
    QCOMPARE2(foundCount, scanner->foundFiles().count() );

    QCOMPARE2(scanner->foundFiles().count(0), 2);
    QCOMPARE2(scanner->foundFiles().count(1), 2);
    QCOMPARE2(scanner->foundFiles().count(2), 2);
    QCOMPARE2(scanner->foundFiles().count(3), 0);
}




// End Tests
void FilesScannerTest::testDirFor(const QString &fileSet) {
    this->testDir = new QFakeDir(fileSet);
    scanner->addScanDirectory(testDir);
}


